小明在研究 MetaMask, Cipher Browser, Trust Wallet 等可執行 DApps 的錢包時,發現網頁都是用 Web3.js 這個 JavaScript 庫來整合錢包。那什麼是 Web3.js 呢?
web3.js是一組用來和本地或遠程以太坊節點進行連接的js庫,以便讓 DApps 能夠訪問區塊鏈上的數據。在底層的實現上,它是通過 RPC 協議與節點通信,web3.js可以與任何對外公開 RPC 介面 的區塊鏈節點連接。
web3.js 目前最新的開發版本為尚未正式釋出的1.0版,官方文件在https://web3js.readthedocs.io/en/1.0/index.html
而在網頁中的調用非常容易上手,只要引入 web3.js 後即可創建一個實例來供調用以太坊的介面
var Web3 = require('web3');
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
通常若有安裝 MetaMask 或在 Cipher Browser 跟 Turst Wallet 的 DApps 瀏覽器中,錢包會自動識別為 currentProvider。
web3.js 主要提供了下列幾大類的模組:
web3.eth
web3.eth這個包用來和以太坊區塊鏈與智能合約交互。
web3.eth.subscribe
web3.eth.subscribe函數係列的作用是訂閱區塊鏈上的事件。
web3.eth.Contract
web3.eth.Contract 簡化了與以太坊區塊鏈上合約的呼叫,web3會自動幫你將所有介面的調用轉化為底層基於 RPC的調用。這使得網頁與智能合約的整合,和呼叫其他 JavaScript 功能一樣簡單。
web3.eth.accounts
web3.eth.accounts 包含了與以太坊錢包地址創建、交易和數據簽名相關的函式。
web3.eth.abi
web3.eth.abi 用於將函數呼叫編碼為 ABI 格式。
web3.bzz
web3-bzz 用來與去中心化文件存儲系統 Swarm 進行整合。
web3.shh
web3-shh 用來與 Whisper 協議進行交互,以便進行廣播。
web3.utils
web3.utils 提供以太坊 Dapps 開發相關的工具函數等。
本文同時發佈於作者部落格:https://www.bdetw.com/blockchain-dapps-web3-js/
想找區塊鏈人才或想學習區塊鏈知識的夥伴。歡迎參加社群小聚,一起來輕鬆交流、互相學習成長、認識新朋友、發現新機會!
台北區塊鏈社群
https://bitlly.co/Q4dIK
BDE 區塊鏈學院 - 提供專業的區塊鏈培訓與顧問服務。
https://bitlly.co/mbDwX